# エンコーディングメニュー

エンコーディングメニューはフォントビューだけに存在します:

- エンコーディング変換(R) >
  - 各種の標準およびユーザ定義のエンコーディングへ
- コンパクト化(C)
- エンコーディングを強制(F) >
  - 各種の標準およびユーザ定義のエンコーディングへ
- エンコーディングスロットを追加(A)...
- 未使用のスロットを削除(U)
- グリフの切り離し(D)
- グリフの切り離し・削除(V)...
- エンコーディングの名前を追加(N)...
- エンコーディングを読み込み(L)...
- フォントから作成(K)...
- エンコーディングを削除(C)...
- グループ毎の表示(G)...
- グループを定義(E)...
- フォントの名前リストを保存(S)...
- 名前リストを読み込み(O)...
- グリフ名を変更(Y)...
- 名前を指定してグリフを作成(A)...

- エンコーディングに関する一般的な注意
  - 組込みのエンコーディング
  - ユーザ定義のエンコーディング
- 名前リスト

エンコーディング変換(R)
  このメニューには標準およびユーザ定義のサブメニューが付属しています。フォントの現在のエンコーディングにはチェックマークがついています。別の項目を選択することによってエンコーディングを変換できます。

  エンコーディングは、2 つの僅かに異なる形式が可能です。それは Unicode の符号位置かグリフ名によって定義することができます。符号位置によって定義されたエンコーディングに変換したときは、それに一致する Unicode 値がエンコーディングスロットに割り当てられます。グリフ名によって定義されたエンコーディングに変換したときは、一致する名前をもつグリフを最初に検索し、見つかった場合はそれを使用します。見つからなかった場合は、グリフ名に対応する Unicode 符号位置 (があれば) を検索し、グリフがあればその名前をエンコーディングによって指定されている名前に変更します。

  例:“uni0041”という名前のグリフを含むフォントがあったとして、そのエンコーディングでは U+0041→スロット 65 に対応づけられていたとすると、グリフはスロット 65 に移動します。もし、“A”→スロット 65 への対応づけを行っている別のエンコーディングがあったとすると、(“A”の Unicode 値は U+0041 なので) エンコーディング変換後のグリフはスロット 65 に置かれたままですが、その名前は“A”に変更されます。

コンパクト化(C)
  エンコーディングからすべての隙間を取り除き、全グリフは一繋がりに押し潰されます。フォントがすでにコンパクト化されている場合、もう一度これを選択するとオリジナルに復元します。
エンコーディングを強制(F)
  上記の …`変換(R)` と同じサブメニューを含みます。このメニューでは、フォント内のグリフが正しい順番に並んでいて、名前の方が間違っていると見なします (これは奇妙に感じますが、よくあることです)。このコマンドは、全てのグリフの名前を、エンコーディングで指定された名前に強制的に変更します。
エンコーディングスロットを追加(A)...
  幾つかの追加スロットをフォントの末尾に追加します。それらはエンコーディングに含まれないグリフ (異体字グリフなど) を定義するのに使用できます。
未使用のスロットを削除(U)
  フォントの末尾にある任意の未使用スロットを削除します。フォントの途中にあるスロットは削除できません。それを行うとエンコーディングが壊れてしまいます。
グリフの切り離し(D)
  選択した全てのエンコーディングスロットを、現在割り当てられているグリフからきりは生します。それらのスロットは未使用のものとマークされます。グリフはフォント内に残ります。文字符号が割り当てられていないだけです (エンコーディング変換を行うと、それらのグリフはまた見えるようになります)。
グリフの切り離し・削除(V)...
  上と同様ですが、切り離されたグリフ (のうち、エンコーディングの他の箇所で使用されていない物) のすべてをフォントから削除します。
エンコーディングの名前を追加(N)...
  ユーザにエンコーディング名を問い合わせ、それを iconv() データベースから検索します。それがあれば、そのエンコーディングをメニューに追加します。
エンコーディングを読み込み(L)...
  ユーザにファイル名を問い合わせ、ユーザ定義のエンコーディングをそのファイルから読み込もうと試みます。(読み込むことができるのは、小さなエンコーディング―― 1 バイトエンコーディングだけです)
フォントから作成(K)...
  フォントの現在のエンコーディングに (既存の物と重ならない) 名前をつけ、エンコーディングメニューに追加することができます。
エンコーディングを削除(C)...
  ユーザ定義のエンコーディングを一つ削除します。
グループ毎の表示(G)...
  フォントビューに表示されたフォントを、ユーザが定義したグループ (次のコマンドで定義できます) に制限します。
グループを定義(E)...
  相互に何らかの繋がりをもつ (と見ることができる) グリフのグループを定義することができます。
フォントの名前リストを保存(S)...
  現在のフォント内のグリフ名を Unicode に対応づける名前リストファイルを作成します。
名前リストを読み込み(O)...
  名前リストファイルを FontForge に読み込み、将来 FontForge を起動した時に読み込めるようにコピーします。
グリフ名を変更(Y)...
  このコマンドでは名前リストを指定できます。現在のフォント内のすべてのグリフは名前リストの様式に合うように改名されます。
名前を指定してグリフを作成(A)...
  このコマンドでは、グリフ名のリストを含むファイルを指定することができます。FontForge は文字コードが割り当てられていないグリフの列を指定した名前で作成します。これは例えば、あなたが作るフォントが必ず小型大文字を含んでいて、それらを常に“A.small”,“B.small”,“C.small”のように命名したい時に役立つはずですし、常に "longs_longs_t", "f_longs", "f_j" 等の名前を使いたい場合にもたぶん役立つでしょう。

## エンコーディングに関する一般的な注意

すべてのフォントフォーマットが全てのエンコーディングをサポートするわけではないことにご注意ください。SVG フォントは常に Unicode エンコーディングで出力され、TreuType では Unicode か CJK エンコーディングのどれかを選ぶことができ、Type1 フォントは 1 バイトエンコーディングしかサポートしていないなどです。

CID キー指定フォントではエンコーディングを変更することはできません (本質的にエンコーディングが存在しないため) が、CID→補遺番号を変更 コマンドでレジストリ/順序づけの情報を表示し、補遺番号を変更することができます。

### 組み込みのエンコーディング

FontForge は、デフォルトで以下のエンコーディングについて知っています。

- ISO-8859-1 (Latin1) ― 西ヨーロッパの伝統的エンコーディングです。HTTP のデフォルトエンコーディングです。ユーロ記号は含まれません。
- ISO-8859-15 (Latin9) ― Latin1に代るコードです。ユーロ記号を含んでいます。
- ISO-8859-2 (Latin2) ― 中央および東ヨーロッパ (チェコ語、ハンガリー語、ポーランド語、ルーマニア語、クロアチア語、スロバキア語、スロベニア語)。
- ISO-8859-3 (Latin3) ― 南ヨーロッパ (エスペラント、マルタ語)
- ISO-8859-4 (Latin4) ― 北ヨーロッパ (エストニア語、ラトビア語、リトアニア語、グリーンランド語、ラップ語)
- (Latin5) ― トルコ語
- ISO-8859-10 (Latin6) ― 北欧諸語 (Latin4 と Latin1 の作り直し)
- ISO-8859-13 (Latin7) ― その他のバルト諸言語用の文字セット
- ISO-8859-14 (Latin8) ― ケルト諸語 (ゲール語とウェールズ語)
- ISO-8859-5 (Cyrillic)
- ISO-8859-6 (Arabic)
- ISO-8859-7 (Greek)
- ISO-8859-8 (Hebrew) ― (およびイディッシュ語)
- ISO-8859-11 (Thai) ― 別名TIS 620
  <ISO-8859-12 はありません>

- KOI8-R ― キリル文字
- Macintosh Roman
- Windows“ANSI”(CodePage1252)
- Adobe 標準
- シンボル
- TeX Base

- ISO-10646-1 (Unicode, BMP)
- ISO-10646-1 (Unicode, Full)
- ISO-10646-? (Unicode, 面を指定)
  (unicode の特定の面 (BMP, SMP, SIP など) を 1 つのエンコーディングとして選べます。

- SJIS
- JIS 208 ― 日本語の漢字 (最初の 8000 文字)
- JIS 212 ― 日本語の漢字 (次の 8000 文字)
- Wansung
- KSC 5601 ― 韓国語 (これは KS C 5601 の 94×94 バージョンです)
- Johab
- GB 2312 ― 簡体字中国語
- パック形式 GB 2312 ― (正確な名前は不明です。ASCII を 0x80 未満のバイトに割り当て、GB 2312 を 0x8080 だけオフセットした EUC)
- Big5 ― 繁体字中国語

- Custom ― 不明なエンコーディング
- Original ― オリジナルのフォントファイルで使用されているグリフ順

エンコーディングに関する情報源:

- ISO 8859 アルファベットスープ
- Unicode の対応表

Unicode のグリフすべての画像へのインデックス。

### ユーザ定義のエンコーディング

FontForge が知っているエンコーディング一覧に新しいエンコーディングを追加することもできます。ユーザ定義のエンコーディング群を操作するためのボタンは 3 つ用意されています。標準のエンコーディングと同様に、これらは文字セットと符号化方式の両方を指定します。エンコーディングは最大 256 項目を含むことができますが、文字セットはそれより大きくても構いません (1024 文字まで)。これは、追加の文字を含むフォントを定義できるということです。PostScript フォントは実行時にエンコーディングを切り替えることができるので、これが役に立つ場合があります。

`エンコーディングを読み込む` コマンドを実行すると、エンコーディングをファイルから読み込むことができます。現在のところ、ファイルは Unicode Consortium が ISO 8859 の各エンコーディングを Unicode に対応づけるのに使っているフォーマットか、PostScript のエンコーディング配列でなければなりません。最初の形式は以下のような形です:

>     0x20	0x0020	#	SPACE
>       0x21	0x0021	#	EXCLAMATION MARK
>       ...

PostScript ファイルは以下のような形です:

>     /TeXBase1Encoding [
>        % 00
>        /.notdef /dotaccent /fi /fl
>        /fraction /hungarianumlaut /Lslash /lslash
>        ...
>       ] def

PostScript ファイルには複数のエンコーディングを含めることができます。エンコーディングの読み込み処理は賢くありません。このような形で指定されたエンコーディングしか読み込めないので、PostScript で配列を指定する他の無数の方法を試みないでください。

フォントにカスタムエンコーディングがある場合、`フォントから作成`メニューが選択できるようになります。これを使って、現在のフォントに対して定義したエンコーディングに名前をつけることができます。

`エンコーディングを削除`メニューを選択すると、すべてのカスタムエンコーディングを列挙するリストが表示され、それらを削除することができます。

ここに PostScript エンコーディングファイルの例があります。それには以下のエンコーディングが含まれています:

- TeXMathItalicEncoding
- TeXMathSymbolEncoding
- TeXMathExtensionEncoding

- IsoLatin ― (これは、ISO-Latin-* フォントのどれかに含まれる文字をすべて指定しています)

- AdobeExpert ― (これはノンライニング数字、小型大文字、分数、下つき/上つき数字などを含みます。)

- CodePage1250 ― Microsoft の中央ヨーロッパの諸文字用エンコーディング
- CodePage1251 ― Microsoft のキリル文字エンコーディング
- CodePage1252 ― Microsoft の西ヨーロッパ用エンコーディング (Latin1 のスーパーセット)。時に“ANSI”と呼ばれますが、これを定めた ANSI 規格の存在は見つかりません。
- CodePage1253 ― Microsoft のギリシャ語エンコーディング
- CodePage1254 ― Microsoft のトルコ語エンコーディング
- CodePage1255 ― Microsoft のヘブライ語エンコーディング (ISO-8859-8 の拡張)。
- CodePage1256 ― Microsoft's Arabic encoding
- CodePage1257 ― Microsoft のバルト諸言語エンコーディング
- CodePage1258 ― Microsoft のベトナム語エンコーディング
- CodePage874 ― Microsoft のタイ語エンコーディング

- MacCentralEuropean
- MacCyrillic
- MacGreek
- MacHebrew

- US-ASCII ― それ自身ではもはや本当に役立つわけではありませんが、その他ほとんどすべてのエンコーディングの最初の 128 文字を提供します。

## 名前リスト

Adobe は、多数の Unicode 文字に人が読んで理解可能なグリフ名をつけた命名規約を定めています。その中には訳の分からない名前もいくつか含まれています。

名前リストは Unicode からグリフ名への対応づけにすぎません。グリフ名は英数字 (および特殊文字‘.’と‘_’) からなり、数字で始まらない長さ 31 文字以内の文字列でなければなりません。

FontForge はいくつかの標準名前リストを提供しています:

- Adobe グリフ名 (AGL)
  これは、Adobe が Web 上で公開している名前セットです。
- AGL (afii を除く)
  キリル文字とヘブライ文字には非常に奇妙な名前 (afiiXXXXX) がつけられており、それを使いたくない人が何人かいます。
- AGL (私用領域を含む)
  Adobe は、Unicode の私用領域の一部を、小型大文字・下つき文字・ノンライニング数字など、いくつかの標準的な異体字を保持するために割り当てています。
- ギリシャ小型大文字
  私は、いくつかのギリシャ文字の小型大文字の割り当てを追加しました。
- TeX 名
  TeX 組版システムは独自の名前セットを定めています。
- AMS 名
  米国数学会 (AMS) は独自の名前セットを定めています。(AMS の仕様書を参照してください)。

あなた自身の名前リストを定義することができます。名前リストは拡張子“.nam” をつける必要があります。その中には以下のような行の並びが含まれます:

>     0x0020 space
>     0x0021 exclam
>     0x0022 dblquote

多くの場合、既存の名前リストに 2, 3 の追加を行いたいだけでしょう。以下のように書くことができます:

>     Based: Adobe Glyph List
>     0x0021 exclamation

この記述は、この名前リストが Adobe グリフリストと同じで、U+0021 が“exclam”ではなく“exclamation”という名前になっているだけが違います。

リストに明記して名前をつけていないグリフはすべて“uniXXXX”または“uXXXXX”という名前になります (ここで XXXX は 16 進表記の Unicode 値を表します)。接頭辞“uni”は BMP 内のグリフに、接頭辞“u”は BMP に含まれないグリフにつけられます。

いま、グリフ名は英数文字 (および他の少数の文字) のみを含むべきであると述べました。しかし実際にはそれは、グリフ名がフォント内に出力される場合のみ当てはまる事実です。独自の名前リストを作成した場合、Unicode の (ほとんど) 全範囲を使用して、どのようなグリフ名でも好きにつけることができます――ただし、フォントを出力する前に全てのグリフ名を Adobe の名前に変換することが前提です。非 ASCII の文字名を使用した場合、ファイルを UTF-8 で符合化する必要があります。

通常は FontForge はグリフ名を ASCII の範囲に制限してしますが、`ファイルF`→`環境設定(E)...`→`一般`→`UnicodeGlyphNames`を選択し、この欄をセットすれば Unicode を使用することができます。

私はアクセント付き文字を使用するフランス語の名前リストを作成しました。これは FontForge ではうまく動作していますし、ほとんどのラスタライザはこのような名前を使用して出力されたフォントを解析することができるでしょう――しかしこれは非標準ですので問題を起こすことでしょう。フォントを出力する前に改名するに如くはありません。

ですから、Adobe が決めた名前以外で作業した方が楽なのでしたら、自前の名前ファイルを作成することができます。ファイルを作成したら `エンコーディング(N)`→`名前リストを読み込み(O)...` で、あなたが今後作成するすべてのフォントがこの名前リストを使用するように命令することができます。フォントの名前リストを変更するには、以下の 2 つの方法があります:

- `エレメント(L)`→`フォント情報(F)`→[`一般情報`]→`名前リスト:`
  新しいグリフに割り当てられる名前を変更します。
- `エンコーディング(N)`→`グリフ名を変更(Y)...`
  既存のグリフ名を、新規のグリフの命名既約に従って変更します。

フォントを開いた時に全グリフを強制的に改名したい場合もあるでしょう。現在のファイルオープンダイアログではそう指定することができます。同様に、フォントの出力時にそのフォントを Adobe グリフリストの標準名を使用するように強制したほうがいいでしょう。

## その他のメニュー

- ファイル(F)
- 編集(E)
- 点(P)
- エレメント(L)
- ヒント(I)
- エンコーディング(N)
- 表示(V)
- メトリック(M)
- CID
- MM
- ウィンドウ(W)
- ヘルプ(H)
- ホットキー一覧

― 前 ― 目次 ― 次 ―